package com.ntl.webcore.common.exception;

/**
 * 公共异常
 */
public class CommonRuntimeException extends RuntimeException implements CommonExceptionConstant{

    private String errorCode;
    private String errorMessage;
    private String clientMessage;
    private CommonDictConstant errorDictConstant;

    /**
     * 空构造方法
     */
    public CommonRuntimeException(){
        super();
    }

    /**
     * 错误编码、错误消息 构造方法 （用来给SysErrorLog存储，只给前台返回错误编码，不提示用户详细错误内容）
     * @param errorCode
     * @param errorMessage
     */
    public CommonRuntimeException(String errorCode, String errorMessage){
        super();
        this.errorCode = errorCode;
        this.errorMessage = errorMessage;
    }


    /**
     * 错误编码、错误消息、异常 构造方法 （用来给SysErrorLog存储，只给前台返回错误编码，不提示用户详细错误内容）
     * @param errorCode
     * @param errorMessage
     * @param exception
     */
    public CommonRuntimeException(String errorCode, String errorMessage, Throwable exception){
        super(exception);
        this.errorCode = errorCode;
        this.errorMessage = errorMessage;
    }

    /**
     * 错误编码、错误消息、用户提示消息、异常 构造方法 （用来给SysErrorLog存储，给前台返回错误编码、用户错误信息内容）
     * @param errorCode
     * @param errorMessage
     * @param clientMessage
     * @param exception
     */
    public CommonRuntimeException(String errorCode, String errorMessage, String clientMessage, Throwable exception){
        super(exception);
        this.errorCode = errorCode;
        this.errorMessage = errorMessage;
        this.clientMessage = clientMessage;
    }

    /**
     * 异常枚举常量、异常 构造方法 （用来给SysErrorLog存储，给前台返回错误编码、用户错误信息内容）
     * @param constant
     * @param exception
     */
    public CommonRuntimeException(CommonExceptionConstant constant, Throwable exception){
        super(exception);
        this.errorCode = constant.getErrorCode();
        this.errorMessage = constant.getErrorMessage();
        this.clientMessage = constant.getClientMessage();
    }
    /**
     * 异常信息、用户提示信息、错误字典枚举常量 自定义用户操作异常（具体错误日志有对应的日志记录处理功能，不适用系统自带错误日志功能）
     * @param errorMessage 详细错误信息，用来给对应的日志处理功能
     * @param clientMessage 用户错误提示信息
     * @param errorDictConstant 异常错误标记字典 用来给对应的日志处理功能标记状态
     */
    public CommonRuntimeException(String errorMessage,String clientMessage,CommonDictConstant errorDictConstant){
        super();
        this.errorMessage = errorMessage;
        this.clientMessage = clientMessage;
        this.errorDictConstant = errorDictConstant;
    }


    public String getErrorCode() {
        return errorCode;
    }

    public String getErrorMessage() {
        return errorMessage;
    }

    public String getClientMessage() {
        return clientMessage;
    }

    public CommonDictConstant getErrorDictConstant() {
        return errorDictConstant;
    }
}
